#ifndef SETTINGS_H
#define SETTINGS_H

#include <string>
#include <nvs_flash.h>

// 设置类：用于管理非易失性存储(NVS)中的配置数据
class Settings {
public:
    // 构造函数：初始化设置存储空间
    Settings(const std::string& ns, bool read_write = false);
    // 析构函数：清理资源
    ~Settings();

    // 获取字符串类型的设置值
    std::string GetString(const std::string& key, const std::string& default_value = "");
    // 设置字符串类型的设置值
    void SetString(const std::string& key, const std::string& value);
    // 获取整数类型的设置值
    int32_t GetInt(const std::string& key, int32_t default_value = 0);
    // 设置整数类型的设置值
    void SetInt(const std::string& key, int32_t value);
    // 删除指定的设置项
    void EraseKey(const std::string& key);
    // 删除所有设置项
    void EraseAll();

private:
    std::string ns_;              // 命名空间
    nvs_handle_t nvs_handle_ = 0; // NVS句柄
    bool read_write_ = false;     // 是否可读写
    bool dirty_ = false;          // 是否有未保存的修改
};

#endif
